package com.merryituxz.o2o.service;

import com.merryituxz.o2o.dto.ImageHolder;
import com.merryituxz.o2o.dto.ProductExecution;
import com.merryituxz.o2o.entity.Product;
import com.merryituxz.o2o.exceptions.ProductOperationException;

import java.io.InputStream;
import java.util.List;

public interface ProductService {
    /**
     * 添加商品信息, 并进行图片处理
     *
     * @param product
     * @param thumbnail
     * @param productImgHolderList
     * @return
     * @throws ProductOperationException
     */
    ProductExecution addProduct(
            Product product, ImageHolder thumbnail, List<ImageHolder> productImgHolderList) throws ProductOperationException;

    /**
     * 通过商品id查询唯一的商品信息
     *
     * @param productId
     * @return
     */
    Product getProductById(long productId);

    /**
     * 修改商品信息并对图片进行处理
     * 若原先存在缩略图则删除原图后再添加新图, 同理处理商品详情图
     * 更新product信息
     *
     * @param product
     * @param thumbnail
     * @param productImgHolderList
     * @return
     * @throws ProductOperationException
     */
    ProductExecution modifyProduct(
            Product product, ImageHolder thumbnail, List<ImageHolder> productImgHolderList) throws ProductOperationException;

    /**
     * 查询商品列表并分页
     * 可输入条件: 商品名(模糊)、商品状态、店铺id、商品类别
     *
     * @param productCondition
     * @param pageIndex
     * @param pageSize
     * @return
     */
    ProductExecution getProductList(Product productCondition, int pageIndex, int pageSize);
}
